/*
 * @Author: LVGRAPE
 * @LastEditors: LVGRAPE
 */
#include <stdint.h>
#include "zino_pin.h"

static GPIO_InitType zino_pin_init_tmp = {.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz};

void zino_pin_mode_plus(GPIO_Type *port, uint16_t pin, GPIOMode_Type mode)
{
    zino_pin_init_tmp.GPIO_Mode = mode;
    zino_pin_init_tmp.GPIO_Pins = pin;
    GPIO_Init(port, &zino_pin_init_tmp);
}

void zino_pin_mode(zino_io_t *io, GPIOMode_Type mode)
{
    zino_pin_init_tmp.GPIO_Pins = io->pin;
    zino_pin_init_tmp.GPIO_Mode = mode;
    GPIO_Init(io->port, &zino_pin_init_tmp);
}
void zino_pin_write(zino_io_t *io, uint8_t value)
{
    if(value)GPIO_SetBits(io->port,io->pin);
    else GPIO_ResetBits(io->port,io->pin);
}
uint8_t zino_pin_read(zino_io_t *io)
{
    return GPIO_ReadInputDataBit(io->port,io->pin);
}
void zino_pin_low(zino_io_t *io)
{
    GPIO_ResetBits(io->port,io->pin);;
}
void zino_pin_high(zino_io_t *io)
{
    GPIO_SetBits(io->port,io->pin);
}

